Codex TUI
Codex CLI 的"驾驶舱"——不是简单的 REPL,而是一个事件驱动状态机,承担实时审批、diff 预览、会话导航、多 Agent 状态展示等功能。
核心问题
普通命令行 chatbot 是线性对话(输入→输出→循环),而 Codex TUI 要解决并发 Agent 行为的可视化与控制:Agent 后台多步执行 → 某步需要审批 → 同时人类可能在编辑 prompt → 多个 subagent 并行。
架构层次
| 层 | 职责 |
|---|---|
| 渲染层 | Ratatui / 原生终端,全屏 alternate screen mode |
| 事件处理层 | 键盘输入、Agent 消息、Tool 结果、审批请求 |
| 状态管理层 | 会话状态、Draft History、审批队列、Agent 树 |
| Wire Protocol 接口 | 与 codex-rs/core 通过 protocol crate 通信 |
核心交互设计
Composer(输入框)
- 支持图片拖入(design spec、截图)
@引用 Skills、MCP 工具、代码片段- Draft 历史:
Up/Down恢复之前草稿(含图片附件) Ctrl+L清屏不清上下文(≠/clear会开新 session)
实时 Diff 预览
Agent 提出文件修改时,TUI 渲染语法高亮的 diff。用户可选 [A]pprove、[R]eject(并告知原因)、/copy(复制输出)。
Approval Gate UI
关键人机协同节点,展示待执行命令并提供三种审批粒度:
| approval_policy | 含义 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
untrusted |
只允许已知安全的只Code Review)、/status、/copy、/theme、/permissions(只读规划模式)、/plugins、/title、/exit。
Alternate Screen 模式TUI 默认使用终端 alternate screen buffer(类似 vim),全屏不污染 shell history,退出后恢复。可通过 App Server 模式
VS Code Extension、桌面 App、Web 前端均可接入同一个 减少不确定性的 TUI 设计
|